package com.haha.helloworld;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.webkit.WebChromeClient;
import android.webkit.WebResourceRequest;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class WebViewActivity extends AppCompatActivity {
    private WebView wv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_web_view);
        wv=(WebView)findViewById(R.id.wv);
        //加载本地html文件
//        wv.loadUrl("file:///android_asset/HelloWorld.html");
        //加载网络URL
        //1.开启js支持
        wv.getSettings().setJavaScriptEnabled(true);
        //2.设置WebViewClient
        wv.setWebViewClient(new MywebViewClient());
        //3.增加进度条，title等效果
        wv.setWebChromeClient(new MyWebChromeClient());

        wv.loadUrl("https://m.baidu.com/");



    }

    //自定义webViewClient，使得浏览器不弹出其他浏览器的开启方式提示
    class MywebViewClient extends WebViewClient{
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
            view.loadUrl(request.getUrl().toString());
            return true;
        }
        //页面加载前执行
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            Log.d("WebView","WebView的onPageStarted方法被调用");
            //可以使用evaluateJavascript方法执行js代码
            wv.evaluateJavascript("javascript:alert('要加载页面了哦！')",null);
        }
        //页面加载后执行
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            Log.d("WebView","WebView的onPageFinished方法被调用");
            //可以使用loadUrl方法执行js代码
            wv.loadUrl("javascript:alert('页面加载完成！')");
        }
    }

    //我们按下返回键的时候，直接就退出wv了，我们目前想在wv里边进行返回操作，可以重写onKeyDown方法实现
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        //当按下的是返回键，且wv组件目前可以执行返回指令的时候
        if (keyCode==KeyEvent.KEYCODE_BACK&&wv.canGoBack()){
            //执行返回指令
            wv.goBack();
        }
        return true;
    }

    class MyWebChromeClient extends WebChromeClient{
        //加载进度显示
        @Override
        public void onProgressChanged(WebView view, int newProgress) {
            super.onProgressChanged(view, newProgress);
        }
        //html里边的title设置
        @Override
        public void onReceivedTitle(WebView view, String title) {
            super.onReceivedTitle(view, title);
            setTitle(title);
        }
    }
}